package com.ixuestar.service;

import java.util.List;

import org.springframework.web.multipart.MultipartFile;

import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.ixuestar.entity.YxClassschedule;

public interface IxuestarCloudELService {

	public JSONObject getWxSessionKey(String code);
	//获取用户手机号并判断是否绑定
	public JSONObject getWxuserInfo(JSONObject jsonObject);
	//获取学校列表
	public JSONObject getSchoolInfos(JSONObject jsonObject);
	//获取年级列表
	public JSONObject getSchoolGradeList(JSONObject jsonObject);
	//获取班级列表
	public JSONObject getSchoolClassList(JSONObject jsonObject);
	//获取老师列表
	public JSONObject getSchoolTeacherList(JSONObject jsonObject);
	//获取老师所关联的年级和班级
	public JSONObject getTeacherInfo(JSONObject jsonObject);
	//绑定老师的信息
	public JSONObject bindTeacherInfo(JSONObject jsonObject);
	//上传文件
	public JSONObject upLoadFile(MultipartFile file,String ytfName);
	//创建文件订单
	public JSONObject preFileOrder(String ytoId,int printNum,int printTotal,int orderType,String ywId,
			String ytoName, Integer ytoDoubleSide);
	//关联订单和文件
	public String writeOrderFile(JSONArray jsonArray,String ytoId);
	//关联文件和班级
	public JSONArray writeOrderClass(JSONArray jsonArray,String ytoId,String ixsId);
	//关联订单和微信
	public JSONObject writeOrderUser(String ytoId,String ywId);
	//获取订单详情
	public JSONObject getFileOrderInfo(String ytoId);
	//获取订单列表
	public JSONObject getFileOrderList(String ywId,Integer pageIndex,Integer pageLimit,int orderStatus);
	//获取签到情况
	public JSONObject getClockInClass(String ixscId,Integer pageIndex,Integer pageLimit);
	//获取未签到学生名单
	public JSONObject getSigninListudents(String ixscId,String ycDate);
	//获取日期内的签到
	public JSONObject getDateClockInClass(String ixscId,String startDate,String stopDate);
	//获取老师的积分
	public JSONObject getHeadTeacherPoints(String ixstId);
	//发起提现申请
	public JSONObject getApplicationForWithdrawal(String ybcName,String ybcIdCard,String ybcCreditcard,
			String ybcBankName,String ywId,double ywoAmount);
	//获取体现账户
	public JSONObject getBankcardInfo(String ywId);
	//修改银行账户信息
	public JSONObject updateBankcardInfo(JSONObject jsonObject);
	//获取体现列表
	public JSONObject getWithdrawalList(String ywId,Integer pageIndex,Integer pageSize);
	//获取班级通讯录
	public JSONObject getClassAddressBook(String ixstId,String ixscId);
	//增加课程
	public JSONObject writeClassSchedule(List<YxClassschedule> list,Integer issueCode);
	//获取班级课程表
	public JSONObject getClassSchedule(String ixscId);
	//获取科目列表
	public JSONObject getClassSubjectInfo(Integer ysPhases, Integer ysStatus);
	//老师发布通知
	public JSONObject writeIssueClassNoticeInfo(Integer ycnFlag, Integer ycnType,String ycnContent,Integer ycnAnwType,
			String ixstId,JSONArray list,JSONArray fileList);
	//获取消息通知列表
	public JSONObject getIssueclassnoticeList(Integer ycnFlag, Integer requestType,String ixscId,String ixstId,Integer pageIndex,Integer pageLimit);
	//获取通知的回复
	public JSONObject getReplyclassnotice(String ixscId,String ycnId,Integer pageIndex,Integer pageLimit);
	//获取查看未查看的名单
	public JSONObject getChecktheNotice(String ixscId,String ycnId);
	//上传文件
	public JSONObject upLoadNoticeFile(MultipartFile file,String ytfName,Integer noticeType);
	//删除消息通知
	public Integer deleteIssueclassnotice(String ycnId,String ixstId);
	//获取当天的签到情况
	public JSONObject getSigninfortheday(String ixscId);
	//写入积分
	public void updateTeacherPoints(String yirNo,String ixscId,String ixstId,String ixssId,Integer integraltype);
	//通过班级id 获取班级学生姓名
	public JSONObject getStudentsForIxscId(String ixscId);
	//创建考试信息
	public JSONObject writeExamInfo(String yenName,String yenDate,String ixscId,String yenPoints,String yenSubject,
			String ixstId,Integer yenStatus,JSONArray jsonArray);
	//获取考试成绩信息
	public JSONObject getTestScoreInfo(String yenId,String ixscId,Integer yenStatus);
	//更改成绩信息
	public JSONObject updateTestScoreInfo(String yenId,JSONArray jsonArray,Integer yenStatus);
	//获取考试列表
	public JSONObject getYxExaminations(String ixstId,String ixscId,Integer pageIndex,Integer pageLimit);
	//删除考试信息
	public Integer deleteYxExaminations(String ixstId,String yenId);
	//获取发布消息发布成绩的次数
	public JSONObject getIssueResidueDegree(String ixstId,String ixscId,Integer issType);
	//获取学科列表
	public JSONObject getSubjectList(Integer ysPhases);
	//获取班级的名称
	public String getSchoolClassName(String ixscId);
	//获取订单文件的张数
	public Integer getFilePageInteger(String ytoId,Integer ytoDoubleSide,Integer ytoPrintNum);
	//取消订单
	public JSONObject deleteOrderBean(String ytoId);
	//删除一个订单记录
	public void deleteWxuserOrder(String ytoId);
	//获取打印豆
	public JSONObject getPrintBean(Integer ytype,JSONArray jsonArray);
	//回收积分和打印豆
	public void recycleIntegralBean(Integer yitNo,String yirNo,String ixstId);
	
	//////////////云易学终端开发/////////////////
	//判断学生的积分是否足够打印
	public JSONObject judgePrintStatus(String ytoId,int ytoPrintNum,Integer ytoDoubleSide,JSONArray classList);
	//判断老师是否还有打印次数
	public JSONObject judgeTeacherPrint(String ytoId,Integer ytoDoubleSide,String ywId,Integer ytoPrintNum);
	//获取终端数据
	public JSONObject getOrderPrintData(String ytoPrintCode);
	//故障报修
	public JSONObject writeMalfunction(String ytoPrintCode,String ixsNo,String ymaMsg);
	//上传文件
	public void upLoadFileOrder(MultipartFile multipartFile);
	//修改订单状态
	public void updateFileOrderStatus(String ytoPrintCode);
	//解绑教师的班级和科目
	public JSONObject updateTeacherbindInfo(String ywId,String ixstId,JSONArray ixscIds);
	//写入机器打印状态时间和机器编码
	public Integer updatePrintInfo(String ytoId,String ytoMachinecode);
	
	//////////////云易学小程序家长端开发/////////////////////
	//通过code获取openid和sessionkey
	public JSONObject getWxSessionKeyParent(String code);
	//获取手机号信息
	public JSONObject getWxUserParentInfo(JSONObject jsonObject);
	//通过学生信息id获取信息
	public JSONObject getSchoolStudentInfo(String ixssId);
	//获取班主任信息
	public JSONObject getHeadTeacherInfo(String ixscId);
	//获取班级学生
	public JSONObject getSchoolStudentList(JSONObject jsonObject);
	//绑定学生信息
	public JSONObject bindStudentInfo(String ywId, String ixssId);
	//重新绑定学生信息
	public JSONObject rebindStudentInfo(String ywId, String ixssId);
	//获取班级的打印订单列表
	public JSONObject getClassFileOrderPrintList(String ixscId, Integer pageIndex, Integer pageLimit, Integer listType);
	//获取订单详情
	public JSONObject getFileOrderPrintData(String ytoId);
	//获取文章列表
	public JSONObject getYxEduArticles(String ywOpenId);
	//获取文章内容
	public JSONObject getYxEduArticlesInfo(String yeaId,String ywOpenId);
	//写入广告观看着信息
	public JSONObject writeWatchAdsInfo(String ywId, Integer ywaType);
	//写入签到统计表
	public JSONObject writeWatchInfo(String ywId, Integer ywaType);
	//更新统计表
	public JSONObject updateWatchInfo(String ywId,String todayDate,String ixssId,String ixscId,Integer totalNum,Integer ywaType);
	//写入积分统计表
	public JSONObject writeStuPoints(String ixssId);
	//获取学校情况
	public JSONObject getSchoolInfoBym(JSONObject jsonObject);
	//获取文件列表
	public JSONObject getYxtorderFiles(String ytoId);
	//判断班级是否存在拥有下单的权利
	public boolean getPunchInRate(String ixscId);
	//写入用户对文章的点赞浏览收藏31536000
	public JSONObject writeArticlesLikeReadCollect(String ywOpenId,String yeaId,Integer operation,Integer operationType);
	//更新文章的点赞浏览收藏的数据
	public JSONObject updateArticlesLikeReadCollect(String ywOpenId,String yeaId,Integer operation,Integer operationType);
	//创建文章的历史对象
	public JSONObject writeArticlesRlc(String ywOpenId,String yeaId,Integer operation,Integer operationType);
	//获取广告
	public JSONObject gettingDisplayAds(String ywOpenId,String yasId);
	//抽奖获取10位优惠码
	public JSONObject getTenPromotionCode(String ywOpenId,String yasId);
	//获取优惠券列表
	public JSONObject getPromotionCodeList(String ywOpenId, Integer listType,Integer pageIndex,Integer pageSize);

	//获取广告列表
	public JSONObject getAdverList();
	//获取上传图片的文件
	public JSONObject upLoadAdverFile(MultipartFile multipartFile,String fileName,String yasId);
	
	//获取课程表
	public JSONObject getstuClassSchedule(String ixscId);
	//获取班级通知列表
	public JSONObject getClasstoinform(Integer ycnFlag,Integer ycnType,String ixssId,String ixscId,Integer pageIndex,Integer pageLimit);
	//回复班级通知
	public JSONObject writeReplytonotice(Integer ycnFlag,String yrcnContent,String ycnId,String ixssId,JSONArray list);
	//写入通知查看记录
	public JSONObject writeChecktheNoticeInfo(Integer ycnFlag,String ycnId,String ixssId);
	//获取已查看和未查看通知列表
	public JSONObject getCheckHomeworkList(Integer ycnRequest,Integer ycnFlag,String ixssId,String ixscId,Integer pageIndex,Integer pageLimit);
	//获取通知详情
	public JSONObject getCheckNoticeInfo(String ycnId,String ixscId,String openId);
	//获取考试成绩列表
	public JSONObject getStutestscoresList(String ixscId,Integer pageIndex,Integer pageLimit);
	//查看结果详细信息
	public JSONObject getStuExaminationsInfo(String ixscId,String ixssId,String yenId);
	//查询连续签到的天数
	public Integer getNumberofcheckins(String ywOpenId);
	//获取抽奖列表
	public JSONObject getLotteryInfo(String ixsgId,String ixsId);
	//抽奖
	public JSONObject getluckydraw(Integer yrlType,String ywId,String ylId);
	//获取抽奖列表
	public JSONObject getPrizeList(String ywId,Integer yulStatus,Integer pageIndex,Integer pageLimit);
	//获取获奖的人员名单
	public JSONObject getAllPrizeList(String ixsgId,Integer lottery);
	//获取是否签到
	public JSONObject getClockinStatus(String ywOpenId);
}
